#pragma once

#ifndef JOGO_H
#define JOGO_H

#include <cstdlib>
#include <fstream>

#include <Windows.h>
#include <iomanip>
#include <stdio.h>
#include <time.h>
#include <ctype.h>

#include "Consola.h"
#include "Celula.h"
#include "Populacao.h"
#include "Soldado.h"
#include "Castelo.h"
#include "Campones.h"
#include "Cavaleiro.h"
#include "CamponesCavalo.h"
#include "Feiticeiro.h"
#include "Quartel.h"
#include "Quinta.h"
#include "Estabulo.h"
#include "Pedreira.h"
#include "Mina.h"
#include "Floresta.h"
#include "Recurso.h"

using namespace std;

class Jogo
{
	int id; //id global para as unidades do jogo
	int lin, col;
	//Celula *mapa;
	vector < vector < Celula >> mapa;
	Populacao p1, pc;
	Recurso *r;

	vector <Unidade *> unidades;
	vector <Edificio *> edificios;
	vector <Recurso *> recursos;

	/*vector <Soldado *> soldados;
	vector <Campones *> camponeses;
	vector <Feiticeiro *> feiticeiros;
	vector <CamponesCavalo *> campcav;
	vector <Cavaleiro *> cavaleiros;

	vector <Castelo *> castelos;
	vector <Quinta *> quintas;
	vector <Quartel *> quarteis;
	vector <Estabulo *> estabulos;*/

public:
	Jogo(int l, int c);
	~Jogo(void);

	void imprime(int fim);
	int prompt(int fich);	//fich=1, vai iniciar jogo por leitura de ficheiro
	void extrairpalavras(string com, string * pals, const int tam);
	void caps(string *pal);
	void setDims(int l, int c);
	//void setPopulacao(Populacao p);
	void imprimeInformacao();
	void imprimeLinha1(int i, Consola c, int Xmin, int Xmax);
	void imprimeLinha2(int i, Consola c, int Xmin, int Xmax);
	void imprimeLinha3(int i, Consola c, int Xmin, int Xmax);
};

#endif